#IfWinActive ahk_exe Typora.exe

; 开关颜色模式
!`::ToggleColorMode()
global colorMode := false

; 色彩模式开关函数
ToggleColorMode() {
    colorMode := !colorMode
    if (colorMode) {
        TrayTip, Typora Color Mode, Enabled, 1
    } else {
        TrayTip, Typora Color Mode, Disabled, 1
    }
}

; 定义颜色快捷键（使用颜色的首字母，避免冲突）
!b::SetColor("blue")
!g::SetColor("green")
!r::SetColor("red")
!o::SetColor("orange")
!p::SetColor("purple")
!y::SetColor("yellow")
!c::SetColor("cyan")
!m::SetColor("magenta")
!a::SetColor("amber") ; 替代gold，避免与green冲突
!s::SetColor("silver")

; 设置颜色函数
SetColor(color) {
    if (!colorMode) {
        return ; 如果颜色模式未激活，则不执行任何操作
    }
    originalClipboard := ClipboardAll ; 保存原始剪贴板内容
    Clipboard := "" ; 清空剪贴板
    Send, ^c ; 复制
    ClipWait, 0.2 ; 等待复制操作完成
    if (Clipboard = "") { ; 如果剪贴板为空，表示没有选择文本
        SendInput, {Text}<font color='%color%'></font> ; 插入空的颜色标签
        Sleep, 50 ; 短暂等待以确保文本插入完成
        Send, {Left 7} ; 发送左箭头键7次以移动光标到标签的中间
    } else {
        SendInput, {Text}<font color='%color%'>%Clipboard%</font> ; 插入颜色标签并包含已复制的文本
        Sleep, 50 ; 短暂等待以确保文本插入完成
        Send, {Left 7} ; 调整以适应带有文本的标签
    }
    Clipboard := originalClipboard ; 恢复原始剪贴板内容
    return
}

#If (colorMode)
